package cn.com.dashihui.kit;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.rsa.sdk.utils.RSA;

import net.sf.json.JSONObject;
	public class EncryUtils{
		public static  Map<String,Object>  toMap(JSONObject json) {
			Map<String,Object> map = new HashMap<String,Object>();
			map.put("result", json.get("result"));
			map.put("msg", json.get("msg"));
			map.put("data", JSONObject.fromObject(json.get("data")));
				return map;
			}
			public static String JudgeIsMoblie(HttpServletRequest request) {
				String isMoblie = "1";
				String[] mobileAgents = { "iphone", "android","ipad", "phone", "mobile", "wap", "netfront", "java", "opera mobi",
						"opera mini", "ucweb", "windows ce", "symbian", "series", "webos", "sony", "blackberry", "dopod",
						"nokia", "samsung", "palmsource", "xda", "pie经纪人", "meizu", "midp", "cldc", "motorola", "foma",
						"docomo", "up.browser", "up.link", "blazer", "helio", "hosin", "huawei", "novarra", "coolpad", "webos",
						"techfaith", "palmsource", "alcatel", "amoi", "ktouch", "nexian", "ericsson", "philips", "sagem",
						"wellcom", "bunjalloo", "maui", "smartphone", "iemobile", "spice", "bird", "zte-", "longcos",
						"pantech", "gionee", "portalmmm", "jig browser", "hiptop", "benq", "haier", "^lct", "320x320",
						"240x320", "176x220", "w3c ", "acs-", "alav", "alca", "amoi", "audi", "avan", "benq", "bird", "blac",
						"blaz", "brew", "cell", "cldc", "cmd-", "dang", "doco", "eric", "hipt", "inno", "ipaq", "java", "jigs",
						"kddi", "keji", "leno", "lg-c", "lg-d", "lg-g", "lge-", "maui", "maxo", "midp", "mits", "mmef", "mobi",
						"mot-", "moto", "mwbp", "nec-", "newt", "noki", "oper", "palm", "pana", "pant", "phil", "play", "port",
						"prox", "qwap", "sage", "sams", "sany", "sch-", "sec-", "send", "seri", "sgh-", "shar", "sie-", "siem",
						"smal", "smar", "sony", "sph-", "symb", "t-mo", "teli", "tim-", "tosh", "tsm-", "upg1", "upsi", "vk-v",
						"voda", "wap-", "wapa", "wapi", "wapp", "wapr", "webc", "winw", "winw", "xda", "xda-",
						"Googlebot-Mobile" };
				if (request.getHeader("User-Agent") != null) {
					String agent=request.getHeader("User-Agent");
					for (String mobileAgent : mobileAgents) {
						if (agent.toLowerCase().indexOf(mobileAgent) >= 0&&agent.toLowerCase().indexOf("windows nt")<=0 &&agent.toLowerCase().indexOf("macintosh")<=0) {
							isMoblie = "2";
							break;
						}
					}
				}
				return isMoblie;
			}
			public static StringBuilder createLinkString(Map<String, String> params){
				List<String> keys = new ArrayList(params.keySet());
				Collections.sort(keys);
				StringBuilder prestr = new StringBuilder();
				String key = "";
				String value = "";
				for (int i = 0; i < keys.size(); i++){
					key = keys.get(i);
					value = params.get(key);
					if ((!"".equals(value)) && (value != null) && (!key.equalsIgnoreCase("SIGN_STR"))) {
						prestr.append(value).append("&");
					}
				}
			return prestr.deleteCharAt(prestr.length() - 1);
			}
			public static String sign(Map<String, String> params, String merPrivateKey){
				String sign = "";
				if (StringUtils.isNotEmpty(merPrivateKey)) {
				sign = RSA.sign(createLinkString(params).toString(), merPrivateKey);
				}
				return sign;
			}
}
